package com.gzsxy.excel.util;

import lombok.SneakyThrows;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;

/**
 * 
 * 功能: 数据缓冲对象（生产者写入数据，消费者获取数据）
 * 版本 1.0
 * </pre>
 */
public class ExportDataAdapter<T> {

    /**
     * 默认队列大小
     */
    private  static Integer  DEFAULT_SIZE = 10000;

    private BlockingQueue<T> resourceQueue = null;

    /**
     * 获取剩余数据数
     * @version 1.0
     * @return
     */
    public Integer getDataSize(){
       return  resourceQueue.size();
    }

    /**
     * 默认构造
     */
    public ExportDataAdapter() {
        this.resourceQueue = new LinkedBlockingQueue<T>(DEFAULT_SIZE);
    }

    /**
     * 添加数据到队列
     * @version 1.0
     * @param data
     */
    @SneakyThrows
    public void addData(T data){
        resourceQueue.offer(data,10, TimeUnit.SECONDS);
    }

    /**
     * 从队列中获取队列
     * @version 1.0
     * @return
     */
    public T getData(){
       return  resourceQueue.poll();
    }
}
